Method: Rugged::TagCollection#[]
- Defined in:
- ext/rugged/rugged_tag_collection.c
#[](name) ⇒ Object
Lookup a tag in repo
, with the given name
.
name
can be a short or canonical tag name (e.g. v0.1.0
or refs/tags/v0.1.0
).
Returns the looked up tag, or nil
if the tag doesn’t exist.
37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
# File 'ext/rugged/rugged_tag_collection.c', line 37
static VALUE rb_git_tag_collection_aref(VALUE self, VALUE rb_name)
{
git_reference *tag;
git_repository *repo;
int error;
VALUE rb_repo = rugged_owner(self);
rugged_check_repo(rb_repo);
Data_Get_Struct(rb_repo, git_repository, repo);
Check_Type(rb_name, T_STRING);
error = git_reference_lookup(&tag, repo, StringValueCStr(rb_name));
if (error == GIT_ENOTFOUND || error == GIT_EINVALIDSPEC) {
char *canonical_ref = xmalloc((RSTRING_LEN(rb_name) + strlen("refs/tags/") + 1) * sizeof(char));
strcpy(canonical_ref, "refs/tags/");
strcat(canonical_ref, StringValueCStr(rb_name));
error = git_reference_lookup(&tag, repo, canonical_ref);
xfree(canonical_ref);
if (error == GIT_ENOTFOUND)
return Qnil;
}
rugged_exception_check(error);
return rugged_ref_new(rb_cRuggedTag, rb_repo, tag);
}
|